Skip to content

feat: dark mode support (candlelit morgue theme)#26

Merged
dotsystemsdevs merged 1 commit into
dotsystemsdevs:mainfrom
itxashancode:feat/dark-mode
May 16, 2026
Merged

feat: dark mode support (candlelit morgue theme)#26
dotsystemsdevs merged 1 commit into
dotsystemsdevs:mainfrom
itxashancode:feat/dark-mode

Conversation

@itxashancode
Copy link
Copy Markdown
Contributor

Closes #13

What's in here

Added full dark mode support. The site was previously parchment-only — now it respects your system preference and remembers your manual choice across sessions.

The toggle

There's a candle/bulb toggle (🕯️ / 💡) sitting in the top banner so it's always reachable without scrolling. It's also in the footer. Both stay in sync.

How the theme works

On first load, a small inline script runs before React kicks in. It reads from localStorage (if you've toggled before) or falls back to prefers-color-scheme. This means zero flash — the right theme is applied before anything paints.

The tag gets a data-theme attribute (light or dark) and all colours are driven off CSS custom properties on :root / [data-theme="dark"]. No JavaScript is needed to repaint anything once the CSS is loaded.

Dark palette

Goes for something atmospheric rather than just inverting the light theme:

Token Light Dark
Background #FAF6EF #0F0C09
Surface (cards) #EDE8E1 #1A1510
Border #1a1a1a #3a3028
Text primary #160A06 #EDE8E1
Text muted #8a8a8a #6a6058
Accent red #8B1A1A #C0392B

Components updated

Every component that had hardcoded hex colours has been migrated to var(--c-*) tokens. This includes the certificate UI, dashboard, hall of fame, and loading states.

Bug fixes bundled in

  • Fixed a Content Security Policy block for plausible.io analytics script in next.config.mjs.
  • Fixed a hydration mismatch warning on the tag using suppressHydrationWarning.
  • Simplified the blocking theme script to fix a SyntaxError: Invalid or unexpected token appearing in production builds.

@vercel
Copy link
Copy Markdown

vercel Bot commented May 1, 2026

@itxashancode is attempting to deploy a commit to the Dotsystems 9999 Team on Vercel.

A member of the Team first needs to authorize it.

@itxashancode
Copy link
Copy Markdown
Contributor Author

screencapture-localhost-3000-2026-05-02-00_20_44

@itxashancode
Copy link
Copy Markdown
Contributor Author

image

@dotsystemsdevs
Copy link
Copy Markdown
Owner

Thanks so much for this — candlelit morgue theme is exactly the kind of energy this project needs! 🕯️

I'm having merge conflicts because main moved recently (open-source repositioning: removed broken coffee link, rewrote footer, updated About page).

The conflicting files are mostly:

  • src/components/SiteFooter.tsx (I rewrote the footer)
  • next.config.mjs (removed /faq redirect)
  • maybe src/app/about/AboutContent.tsx

Could you rebase your branch onto current main? Should be straightforward:

git checkout feat/dark-mode
git fetch upstream
git rebase upstream/main
# resolve conflicts (mostly favoring upstream for footer/about)
git push --force-with-lease

Once rebased I'll review and merge. Really appreciate the contribution. 🦥

@dotsystemsdevs dotsystemsdevs merged commit 8aae18c into dotsystemsdevs:main May 16, 2026
1 check failed
@dotsystemsdevs
Copy link
Copy Markdown
Owner

Merged manually into main as 8aae18c after rebasing onto recent changes (open-source footer + /faq page + extension). Conflicts were in next.config.mjs, layout.tsx, page.tsx, and SiteFooter.tsx — resolved while preserving both your dark-mode work and the recent main additions.

Credit retained in commit metadata. Thanks for the work! 🕯️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dark mode support

2 participants